The present invention relates to communications networks and, in particular, to the exchange of data between users of computational resources connected to a communications network and a distributed resource allocation system that manages the use of those computational resources, including adding and deleting computational resources.
A typical communications network comprises a number of computers and other electronic devices interconnected by a data transmission network. Data transmission networks include public switched telephone networks (PSTNs), ATM networks, internal intranets, the Internet and private networks implemented using any of a large number of available software and hardware components. Commonly, a computer is connected to a physical data transmission network through one or more physical ports, each port having a unique network address. Additional types of electronic devices may also be directly connected to a physical data transmission network or may be accessed from the physical data transmission network through an intermediate computer to which the electronic devices are attached. These additional electronic devices include modems, printers, switchboards, and audio response units.
Each computer attached to the network can execute one or more software programs. An instance of a running program is called a process. A person using a general purpose computer normally launches the execution of application programs. Application programs include word processing programs, web browsers, spread sheets, and computer games. Such programs will be called xe2x80x9cusersxe2x80x9d in the following discussion. Application programs can, in turn, request and make use of operating system services provided by concurrently executing operating system programs. These services include the transfer of data from one general purpose computer to another over a physical data transmission network. The data may be transferred to another application program running on a remote computer or to a peripheral device such as a modem or a printer. An application program may also initiate execution of a program on a remote computer, transmit data to that program, and receive data back from that program over a physical data transmission network. The electronic devices, including computers, that a user may directly request services from, either directly or indirectly through operating system calls, are commonly referred to as computer resources.
FIG. 1 represents a schematic diagram of a simple communications network. The physical data transmission network 101 is represented as a central spoke and hub feature connecting the remaining elements in the diagram. These remaining elements include computers 102-106, users 107-110, and resources 112-118. One resource 112 is connected directly to the physical data transmission network. Resources 113-118 are indirectly connected to the network through computers. Tasks are processes running on a multi-tasking computer. Each task is launched by a user. The capacity of this multi-tasking computer 106 to run processes is considered a resource. Resources 112-118 represent printers, modems, switchboards, or other electronic devices.
A communications network, like the network displayed in FIG. 1, provides the potential for a user running on one computer to exchange data with, and request services from, remote resources connected to the network. For example, suppose computer 102 in FIG. 1 represents a personal computer running a software application program corresponding to user 107. Resource 113, which is attached directly to this personal computer, represents a black and white laser printer. Resource 114, which is directly connected to computer 104, represents a color printer. Suppose that user 107 has been directed to print out a color diagram. In order to print the color diagram, user 107 must send to computer 104, through the physical data transmission network, a file representing the diagram to be printed and a request that that file be printed out by the color printer 114.
Even in a simple communications network, like the one displayed in FIG. 1, attempts by several users to simultaneously access remote resources can lead to a number of problems. Continuing with the above example, suppose user 109 running on computer 106 has also been directed to print a color diagram, and that user 109 sends a request to computer 104 to print the color diagram on color printer 114 at about the same time as user 107 sends its request. In such a case, users 107 and 109 are said to contend for resource 114. Such a contention may be resolved by queuing the requests in the order that they arrive at computer 104 and submitting the queued requests one at a time to the color printer. This means, however, that if user 107 made its request slightly ahead of user 109, user 109 must wait until the request made by user 107 has been completed. Suppose resource 118, connected to computer 103, is also a color printer. User 109 could avoid the delay incurred by waiting for color printer 114 to finish printing the request made by user 107 by instead sending the request to color printer 118, thus balancing the load between the two color printers. However, in order to do so, user 109 would have to know that there are two color printers accessible via the network and that color printer 114 is currently busy with another task while color printer 118 is currently free. This further implies that user 109 must have essentially global information about the entire communications network. Such global information is dynamic rather than static. Printers can be turned on and off, for instance, or additional resources can be added to the network. Another problem encountered by users of distributed resources is that of determining the capabilities of those distributed resources. It is far beyond the capability of application programs to acquire and maintain dynamic global network information. Even if a particular application program could be written to acquire and maintain dynamic global information, every other software application program would also need to be written with this capability. Such redundancy is prohibitively expensive and inefficient.
The present invention provides a method and system for exchanging data between a user and a distributed resource allocator handling system that allocates computer resources connected to a communications network to users requesting those resources. The distributed resource allocator handling system comprises a number of resource allocator system agents, each running as a separate process on a computer connected to the network. Each resource allocator system agent maintains a database of global network resource information, freeing application programs from the necessity of maintaining such information. The resource allocator system agents constantly communicate with all other resource allocator system agents that comprise the distributed resource allocator handling system to ensure that each resource allocator system agent has the same global network information. A resource allocator system agent may be accessed directly by a user running on the same computer via an applications programming interface, or may be accessed by a user running on a remote computer via a communications protocol that provides the same functional interface as that provided by the applications programming interface. Resource allocator system agents communicate one with another using a different communications protocol. The elements of the resource allocator handling system provide a facility for entering information regarding resources, including the ability to add or delete a resource. In this manner, the application programs are freed from the necessity of acquiring and maintaining resource information on their own.
The present invention also provides a method and system for registering new resources and the components that comprise the resources of the distributed resource allocation handling system. A resource allocator receives a request to add a new resource to the plurality of resources in the distributed resource allocation handling system. A distributed resource database comprises data regarding the plurality of resources in the distributed resource allocation handling system. A resource verifier examines the new resource request to determine if the new resource request is compatible with the plurality of resources in the distributed resource allocation handling system. The network also includes a global directory that comprises data regarding the components that comprise the various resources within the distributed allocation handling system. A request to add a new resource includes resource component data that is compatible with the resource components stored in the global directory.